Skip to main content

混合算法: Actor-Critic, A2C, A3C, DDPG, SAC

Actor-Critic用了一个很奇妙的设计把Policy Gradient和Value Function结合在一起, 从而衍生出了一系列算法如A2C, A3C, DDPG, SAC等. 这些算法在实践中表现出了很好的性能, 也是目前最流行的强化学习算法之一.

我们先前在讲Policy Gradient时提到过

  1. Policy Gradient的优势在于可以直接优化策略, 而不需要像Q-Learning那样需要一个价值函数来辅助. 但是, Policy Gradient也有一个很大的缺点, 就是它的样本效率很低, 通常需要大量的样本来训练. 这是因为Policy Gradient是基于蒙特卡洛采样的, 每次更新都需要采样一条完整的轨迹, 这样的样本利用率很低. 而且, 由于Policy Gradient是基于梯度的, 它的更新是不稳定的, 容易出现不收敛的情况.
  2. MC的引入只是为了去估计Q(s,a)Q(s, a), 我们可不可以再用一个神经网络去拟合Q(s,a)Q(s, a)呢? 答案是可以的, 这就是我们要讲的Actor-Critic算法.

Actor-Critic

定义两个神经网络:

Policy Network: πθ(as)\pi_{\theta}(a|s), 用来输出动作的概率分布. 称为Actor

Value Network: Qw(s,a)Q_{w}(s,a), 用来输出价值. 称为Critic

那我们如何使用采样更新这个网络呢?

我们联想到TD算法,可以自举的更新价值函数,我们可以用TD Error来更新Value Network,即:

Qw(s,a)Qw(st,at)+α(rt+γQw(st+1,at+1)Qw(st,at))Q_{w}(s,a) \leftarrow Q_{w}(s_t,a_t) + \alpha (r_t + \gamma Q_w(s_{t+1}, a_{t+1})-Q_w(s_t,a_t)) 这里Value Network可以用V,也可以用Q,用V不需要计算at+1a_{t+1}

这会让我们的Value Network逐渐趋向收敛, Critic越来越知道如何评判动作

然后用policy gradient更新πθ(as)\pi_{\theta}(a|s)

Actor的目标是最大化Advantage Function

Critic的目标是最小化TD Error

其算法流程如下:

  1. Observe采样, 得到st,at,rt,st+1s_t, a_t, r_t, s_{t+1}
  2. 用当前网络假想一个 at+1π(st+1,θt)a_{t+1} \sim \pi(\cdot|s_{t+1},\theta_t)
  3. 计算TD Error: δt=rt+γQw(st+1,at+1)Qw(st,at)\delta_t = r_t + \gamma Q_w(s_{t+1}, a_{t+1})-Q_w(s_t,a_t)
  4. 更新Critic: ww+αw12δt2w \leftarrow w + \alpha \nabla_w \frac{1}{2}\delta_t^2
  5. 更新Actor: θθ+βθlogπ(atst)δt\theta \leftarrow \theta + \beta \nabla_{\theta} \log \pi(a_t|s_t) \delta_t 这里用δ\delta而不是Q就相当于用了baseline优化

当然, 之前的优化机制全可以在这里用:

  • Critic的经验回放, n-steps, 优先级经验回放, Double DQN, Dueling DQN, noise以及全部合起来的Rainbow模型等
  • Actor的策略梯度的优化, baseline, PPO, TRPO, DDPG等

Actor-Critic实质上不是一个模型, 而是一种框架

例如以上的优化机制之中,只要使用baseline就是A2C,把整个框架分布式异步化就是A3C, 把Critic使用DQN的变体, 用神经网络表示策略(还是为了解决连续动作的问题)+ Double DQN + 软更新(wτw+(1τ)ww'\leftarrow \tau w+(1-\tau)w')+ 使用高斯噪声而不是ϵ\epsilon-greedy就是DDPG

在AC这样的多模型架构中, state部分可以共享抽特征的层

之前的章节提到过在线策略算法的采样效率比较低,我们通常更倾向于使用离线策略算法。然而,虽然 DDPG 是离线策略算法,但是它的训练非常不稳定,收敛性较差,对超参数比较敏感,也难以适应不同的复杂环境。2018 年,一个更加稳定的离线策略算法 Soft Actor-Critic(SAC)被提出。SAC 的前身是 Soft Q-learning,它们都属于最大熵强化学习的范畴。Soft Q-learning 不存在一个显式的策略函数,而是使用一个函数的波尔兹曼分布,在连续空间下求解非常麻烦。于是 SAC 提出使用一个 Actor 表示策略函数,从而解决这个问题。目前,在无模型的强化学习算法中,SAC 是一个非常高效的算法,它学习一个随机性策略,在不少标准环境中取得了领先的成绩。

AC之中,修改V加上一个熵H(π)=Eaπ[log(π(a))]H(\pi)=E_{a\sim\pi}[-log(\pi(a))],使得策略更加随机,从而更容易探索到更多的状态

对应修改V(s)V(s)的奖励为R(st,at,st+1)+αH(π(st))R(s_t,a_t,s_{t+1}) + \alpha H(\pi(\cdot|s_t)),再加上前面那些优化,就是SAC

image-20250212013323924